home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / nspapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  18.7 KB  |  700 lines

  1. /*++
  2.  
  3. Copyright (c) 1991-1996  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     nspapi.h
  8.  
  9. Abstract:
  10.  
  11.     Name Space Provider API prototypes and manifests. See the
  12.     "Windows NT NameSpace Provider Specification" document for
  13.     details.
  14.  
  15.  
  16. Environment:
  17.  
  18.     User Mode -Win32
  19.  
  20. Notes:
  21.  
  22.     You must include "basetyps.h" first. Some types should
  23.     use definitions from base files rather than redefine here.
  24.     Unfortunately, so such base file exists.
  25.  
  26. --*/
  27.  
  28. /*
  29.  *      C/C++ Run Time Library - Version 9.0
  30.  *
  31.  *      Copyright (c) 1997, 1998 by Borland International
  32.  *      All Rights Reserved.
  33.  *
  34.  */
  35.  
  36. #ifndef _NSPAPI_INCLUDED
  37. #define _NSPAPI_INCLUDED
  38. #pragma option push -b
  39.  
  40.  
  41. #ifdef __cplusplus
  42. extern "C" {
  43. #endif /* __cplusplus */
  44.  
  45. #ifndef _tagBLOB_DEFINED
  46. #define _tagBLOB_DEFINED
  47. #define _BLOB_DEFINED
  48. #define _LPBLOB_DEFINED
  49. typedef struct _BLOB {
  50.     ULONG cbSize ;
  51. #ifdef MIDL_PASS
  52.     [size_is(cbSize)] BYTE *pBlobData;
  53. #else  // MIDL_PASS
  54.     BYTE *pBlobData ;
  55. #endif // MIDL_PASS
  56. } BLOB, *LPBLOB ;
  57. #endif
  58.  
  59. #ifndef GUID_DEFINED
  60. #define GUID_DEFINED
  61. typedef struct _GUID
  62. {
  63.     unsigned long  Data1;
  64.     unsigned short Data2;
  65.     unsigned short Data3;
  66.     unsigned char  Data4[8];
  67. } GUID;
  68. #endif /* GUID_DEFINED */
  69.  
  70. #ifndef __LPGUID_DEFINED__
  71. #define __LPGUID_DEFINED__
  72. typedef GUID *LPGUID;
  73. #endif
  74.  
  75.  
  76. //
  77. // Service categories
  78. //
  79. #define SERVICE_RESOURCE            (0x00000001)
  80. #define SERVICE_SERVICE             (0x00000002)
  81. #define SERVICE_LOCAL               (0x00000004)
  82.  
  83. //
  84. // Operation used when calling SetService()
  85. //
  86. #define SERVICE_REGISTER            (0x00000001)
  87. #define SERVICE_DEREGISTER          (0x00000002)
  88. #define SERVICE_FLUSH               (0x00000003)
  89. #define SERVICE_ADD_TYPE            (0x00000004)
  90. #define SERVICE_DELETE_TYPE         (0x00000005)
  91.  
  92. //
  93. // Flags that affect the operations above
  94. //
  95. #define SERVICE_FLAG_DEFER          (0x00000001)
  96. #define SERVICE_FLAG_HARD           (0x00000002)
  97.  
  98. //
  99. // Used as input to GetService() for setting the dwProps parameter
  100. //
  101. #define PROP_COMMENT                (0x00000001)
  102. #define PROP_LOCALE                 (0x00000002)
  103. #define PROP_DISPLAY_HINT           (0x00000004)
  104. #define PROP_VERSION                (0x00000008)
  105. #define PROP_START_TIME             (0x00000010)
  106. #define PROP_MACHINE                (0x00000020)
  107. #define PROP_ADDRESSES              (0x00000100)
  108. #define PROP_SD                     (0x00000200)
  109. #define PROP_ALL                    (0x80000000)
  110.  
  111. //
  112. // Flags that describe attributes of Service Addresses
  113. //
  114.  
  115. #define SERVICE_ADDRESS_FLAG_RPC_CN (0x00000001)
  116. #define SERVICE_ADDRESS_FLAG_RPC_DG (0x00000002)
  117. #define SERVICE_ADDRESS_FLAG_RPC_NB (0x00000004)
  118.  
  119. //
  120. // Name Spaces
  121. //
  122.  
  123. #define NS_DEFAULT                  (0)
  124.  
  125. #define NS_SAP                      (1)
  126. #define NS_NDS                      (2)
  127. #define NS_PEER_BROWSE              (3)
  128.  
  129. #define NS_TCPIP_LOCAL              (10)
  130. #define NS_TCPIP_HOSTS              (11)
  131. #define NS_DNS                      (12)
  132. #define NS_NETBT                    (13)
  133. #define NS_WINS                     (14)
  134.  
  135. #define NS_NBP                      (20)
  136.  
  137. #define NS_MS                       (30)
  138. #define NS_STDA                     (31)
  139. #define NS_NTDS                     (32)
  140.  
  141. #define NS_X500                     (40)
  142. #define NS_NIS                      (41)
  143.  
  144. #define NS_VNS                      (50)
  145.  
  146. //
  147. // Name space attributes.
  148. //
  149. #define NSTYPE_HIERARCHICAL         (0x00000001)
  150. #define NSTYPE_DYNAMIC              (0x00000002)
  151. #define NSTYPE_ENUMERABLE           (0x00000004)
  152. #define NSTYPE_WORKGROUP            (0x00000008)
  153.  
  154. //
  155. // Transport attributes.
  156. //
  157. #define XP_CONNECTIONLESS           (0x00000001)
  158. #define XP_GUARANTEED_DELIVERY      (0x00000002)
  159. #define XP_GUARANTEED_ORDER         (0x00000004)
  160. #define XP_MESSAGE_ORIENTED         (0x00000008)
  161. #define XP_PSEUDO_STREAM            (0x00000010)
  162. #define XP_GRACEFUL_CLOSE           (0x00000020)
  163. #define XP_EXPEDITED_DATA           (0x00000040)
  164. #define XP_CONNECT_DATA             (0x00000080)
  165. #define XP_DISCONNECT_DATA          (0x00000100)
  166. #define XP_SUPPORTS_BROADCAST       (0x00000200)
  167. #define XP_SUPPORTS_MULTICAST       (0x00000400)
  168. #define XP_BANDWIDTH_ALLOCATION     (0x00000800)
  169. #define XP_FRAGMENTATION            (0x00001000)
  170. #define XP_ENCRYPTS                 (0x00002000)
  171.  
  172. //
  173. // Resolution flags for GetAddressByName().
  174. //
  175. #define RES_SOFT_SEARCH             (0x00000001)
  176. #define RES_FIND_MULTIPLE           (0x00000002)
  177. #define RES_SERVICE                 (0x00000004)
  178.  
  179. //
  180. // Well known value names for Service Types
  181. //
  182.  
  183. #define SERVICE_TYPE_VALUE_SAPIDA        "SapId"
  184. #define SERVICE_TYPE_VALUE_SAPIDW       L"SapId"
  185.  
  186. #define SERVICE_TYPE_VALUE_CONNA         "ConnectionOriented"
  187. #define SERVICE_TYPE_VALUE_CONNW        L"ConnectionOriented"
  188.  
  189. #define SERVICE_TYPE_VALUE_TCPPORTA      "TcpPort"
  190. #define SERVICE_TYPE_VALUE_TCPPORTW     L"TcpPort"
  191.  
  192. #define SERVICE_TYPE_VALUE_UDPPORTA      "UdpPort"
  193. #define SERVICE_TYPE_VALUE_UDPPORTW     L"UdpPort"
  194.  
  195. #ifdef UNICODE
  196.  
  197. #define SERVICE_TYPE_VALUE_SAPID        SERVICE_TYPE_VALUE_SAPIDW
  198. #define SERVICE_TYPE_VALUE_CONN         SERVICE_TYPE_VALUE_CONNW
  199. #define SERVICE_TYPE_VALUE_TCPPORT      SERVICE_TYPE_VALUE_TCPPORTW
  200. #define SERVICE_TYPE_VALUE_UDPPORT      SERVICE_TYPE_VALUE_UDPPORTW
  201.  
  202. #else // not UNICODE
  203.  
  204. #define SERVICE_TYPE_VALUE_SAPID        SERVICE_TYPE_VALUE_SAPIDA
  205. #define SERVICE_TYPE_VALUE_CONN         SERVICE_TYPE_VALUE_CONNA
  206. #define SERVICE_TYPE_VALUE_TCPPORT      SERVICE_TYPE_VALUE_TCPPORTA
  207. #define SERVICE_TYPE_VALUE_UDPPORT      SERVICE_TYPE_VALUE_UDPPORTA
  208.  
  209. #endif
  210.  
  211.  
  212. //
  213. // status flags returned by SetService
  214. //
  215. #define SET_SERVICE_PARTIAL_SUCCESS  (0x00000001)
  216.  
  217. //
  218. // Name Space Information
  219. //
  220. typedef struct _NS_INFOA {
  221.     DWORD dwNameSpace ;
  222.     DWORD dwNameSpaceFlags ;
  223.     LPSTR   lpNameSpace ;
  224. } NS_INFOA,  * PNS_INFOA, FAR * LPNS_INFOA;
  225. //
  226. // Name Space Information
  227. //
  228. typedef struct _NS_INFOW {
  229.     DWORD dwNameSpace ;
  230.     DWORD dwNameSpaceFlags ;
  231.     LPWSTR  lpNameSpace ;
  232. } NS_INFOW,  * PNS_INFOW, FAR * LPNS_INFOW;
  233. #ifdef UNICODE
  234. typedef NS_INFOW NS_INFO;
  235. typedef PNS_INFOW PNS_INFO;
  236. typedef LPNS_INFOW LPNS_INFO;
  237. #else
  238. typedef NS_INFOA NS_INFO;
  239. typedef PNS_INFOA PNS_INFO;
  240. typedef LPNS_INFOA LPNS_INFO;
  241. #endif // UNICODE
  242.  
  243. //
  244. // Service Type Values. The structures are used to define named Service
  245. // Type specific values. This structure is self relative and has no pointers.
  246. //
  247. typedef struct _SERVICE_TYPE_VALUE {
  248.     DWORD dwNameSpace ;
  249.     DWORD dwValueType ;
  250.     DWORD dwValueSize ;
  251.     DWORD dwValueNameOffset ;
  252.     DWORD dwValueOffset ;
  253. } SERVICE_TYPE_VALUE, *PSERVICE_TYPE_VALUE, FAR *LPSERVICE_TYPE_VALUE ;
  254.  
  255. //
  256. // An absolute version of above. This structure does contain pointers.
  257. //
  258. typedef struct _SERVICE_TYPE_VALUE_ABSA  {
  259.     DWORD dwNameSpace ;
  260.     DWORD dwValueType ;
  261.     DWORD dwValueSize ;
  262.     LPSTR   lpValueName ;
  263.     PVOID lpValue ;
  264. } SERVICE_TYPE_VALUE_ABSA,
  265.   *PSERVICE_TYPE_VALUE_ABSA,
  266.   FAR *LPSERVICE_TYPE_VALUE_ABSA;
  267. //
  268. // An absolute version of above. This structure does contain pointers.
  269. //
  270. typedef struct _SERVICE_TYPE_VALUE_ABSW  {
  271.     DWORD dwNameSpace ;
  272.     DWORD dwValueType ;
  273.     DWORD dwValueSize ;
  274.     LPWSTR  lpValueName ;
  275.     PVOID lpValue ;
  276. } SERVICE_TYPE_VALUE_ABSW,
  277.   *PSERVICE_TYPE_VALUE_ABSW,
  278.   FAR *LPSERVICE_TYPE_VALUE_ABSW;
  279. #ifdef UNICODE
  280. typedef SERVICE_TYPE_VALUE_ABSW SERVICE_TYPE_VALUE_ABS;
  281. typedef PSERVICE_TYPE_VALUE_ABSW PSERVICE_TYPE_VALUE_ABS;
  282. typedef LPSERVICE_TYPE_VALUE_ABSW LPSERVICE_TYPE_VALUE_ABS;
  283. #else
  284. typedef SERVICE_TYPE_VALUE_ABSA SERVICE_TYPE_VALUE_ABS;
  285. typedef PSERVICE_TYPE_VALUE_ABSA PSERVICE_TYPE_VALUE_ABS;
  286. typedef LPSERVICE_TYPE_VALUE_ABSA LPSERVICE_TYPE_VALUE_ABS;
  287. #endif // UNICODE
  288.  
  289. //
  290. // Service Type Information. Contains the name of the Service Type and
  291. // and an array of SERVICE_NS_TYPE_VALUE structures. This structure is self
  292. // relative and has no pointers in it.
  293. //
  294. typedef struct _SERVICE_TYPE_INFO {
  295.     DWORD dwTypeNameOffset ;
  296.     DWORD dwValueCount ;
  297.     SERVICE_TYPE_VALUE Values[1] ;
  298. } SERVICE_TYPE_INFO, *PSERVICE_TYPE_INFO, FAR *LPSERVICE_TYPE_INFO ;
  299.  
  300. typedef struct _SERVICE_TYPE_INFO_ABSA {
  301.     LPSTR   lpTypeName ;
  302.     DWORD dwValueCount ;
  303.     SERVICE_TYPE_VALUE_ABSA Values[1] ;
  304. } SERVICE_TYPE_INFO_ABSA,
  305.   *PSERVICE_TYPE_INFO_ABSA,
  306.   FAR *LPSERVICE_TYPE_INFO_ABSA ;
  307. typedef struct _SERVICE_TYPE_INFO_ABSW {
  308.     LPWSTR  lpTypeName ;
  309.     DWORD dwValueCount ;
  310.     SERVICE_TYPE_VALUE_ABSW Values[1] ;
  311. } SERVICE_TYPE_INFO_ABSW,
  312.   *PSERVICE_TYPE_INFO_ABSW,
  313.   FAR *LPSERVICE_TYPE_INFO_ABSW ;
  314. #ifdef UNICODE
  315. typedef SERVICE_TYPE_INFO_ABSW SERVICE_TYPE_INFO_ABS;
  316. typedef PSERVICE_TYPE_INFO_ABSW PSERVICE_TYPE_INFO_ABS;
  317. typedef LPSERVICE_TYPE_INFO_ABSW LPSERVICE_TYPE_INFO_ABS;
  318. #else
  319. typedef SERVICE_TYPE_INFO_ABSA SERVICE_TYPE_INFO_ABS;
  320. typedef PSERVICE_TYPE_INFO_ABSA PSERVICE_TYPE_INFO_ABS;
  321. typedef LPSERVICE_TYPE_INFO_ABSA LPSERVICE_TYPE_INFO_ABS;
  322. #endif // UNICODE
  323.  
  324.  
  325. //
  326. // A Single Address definition.
  327. //
  328. typedef struct _SERVICE_ADDRESS {
  329.     DWORD   dwAddressType ;
  330.     DWORD   dwAddressFlags ;
  331.     DWORD   dwAddressLength ;
  332.     DWORD   dwPrincipalLength ;
  333. #ifdef MIDL_PASS
  334.     [size_is(dwAddressLength)] BYTE *lpAddress;
  335. #else  // MIDL_PASS
  336.     BYTE   *lpAddress ;
  337. #endif // MIDL_PASS
  338. #ifdef MIDL_PASS
  339.     [size_is(dwPrincipalLength)] BYTE *lpPrincipal;
  340. #else  // MIDL_PASS
  341.     BYTE   *lpPrincipal ;
  342. #endif // MIDL_PASS
  343. } SERVICE_ADDRESS, *PSERVICE_ADDRESS, *LPSERVICE_ADDRESS;
  344.  
  345. //
  346. // Addresses used by the service. Contains array of SERVICE_ADDRESS.
  347. //
  348. typedef struct _SERVICE_ADDRESSES {
  349.     DWORD           dwAddressCount ;
  350. #ifdef MIDL_PASS
  351.     [size_is(dwAddressCount)] SERVICE_ADDRESS Addressses[*];
  352. #else  // MIDL_PASS
  353.     SERVICE_ADDRESS Addresses[1] ;
  354. #endif // MIDL_PASS
  355. } SERVICE_ADDRESSES, *PSERVICE_ADDRESSES, *LPSERVICE_ADDRESSES;
  356.  
  357.  
  358. //
  359. // Service Information.
  360. //
  361. typedef struct _SERVICE_INFOA {
  362.     LPGUID lpServiceType ;
  363.     LPSTR   lpServiceName ;
  364.     LPSTR   lpComment ;
  365.     LPSTR   lpLocale ;
  366.     DWORD dwDisplayHint ;
  367.     DWORD dwVersion ;
  368.     DWORD dwTime ;
  369.     LPSTR   lpMachineName ;
  370.     LPSERVICE_ADDRESSES lpServiceAddress ;
  371.     BLOB ServiceSpecificInfo ;
  372. } SERVICE_INFOA, *PSERVICE_INFOA, FAR * LPSERVICE_INFOA ;
  373. //
  374. // Service Information.
  375. //
  376. typedef struct _SERVICE_INFOW {
  377.     LPGUID lpServiceType ;
  378.     LPWSTR  lpServiceName ;
  379.     LPWSTR  lpComment ;
  380.     LPWSTR  lpLocale ;
  381.     DWORD dwDisplayHint ;
  382.     DWORD dwVersion ;
  383.     DWORD dwTime ;
  384.     LPWSTR  lpMachineName ;
  385.     LPSERVICE_ADDRESSES lpServiceAddress ;
  386.     BLOB ServiceSpecificInfo ;
  387. } SERVICE_INFOW, *PSERVICE_INFOW, FAR * LPSERVICE_INFOW ;
  388. #ifdef UNICODE
  389. typedef SERVICE_INFOW SERVICE_INFO;
  390. typedef PSERVICE_INFOW PSERVICE_INFO;
  391. typedef LPSERVICE_INFOW LPSERVICE_INFO;
  392. #else
  393. typedef SERVICE_INFOA SERVICE_INFO;
  394. typedef PSERVICE_INFOA PSERVICE_INFO;
  395. typedef LPSERVICE_INFOA LPSERVICE_INFO;
  396. #endif // UNICODE
  397.  
  398.  
  399. //
  400. // Name Space & Service Information
  401. //
  402. typedef struct _NS_SERVICE_INFOA {
  403.     DWORD dwNameSpace ;
  404.     SERVICE_INFOA ServiceInfo ;
  405. } NS_SERVICE_INFOA, *PNS_SERVICE_INFOA, FAR * LPNS_SERVICE_INFOA ;
  406. //
  407. // Name Space & Service Information
  408. //
  409. typedef struct _NS_SERVICE_INFOW {
  410.     DWORD dwNameSpace ;
  411.     SERVICE_INFOW ServiceInfo ;
  412. } NS_SERVICE_INFOW, *PNS_SERVICE_INFOW, FAR * LPNS_SERVICE_INFOW ;
  413. #ifdef UNICODE
  414. typedef NS_SERVICE_INFOW NS_SERVICE_INFO;
  415. typedef PNS_SERVICE_INFOW PNS_SERVICE_INFO;
  416. typedef LPNS_SERVICE_INFOW LPNS_SERVICE_INFO;
  417. #else
  418. typedef NS_SERVICE_INFOA NS_SERVICE_INFO;
  419. typedef PNS_SERVICE_INFOA PNS_SERVICE_INFO;
  420. typedef LPNS_SERVICE_INFOA LPNS_SERVICE_INFO;
  421. #endif // UNICODE
  422.  
  423. #ifndef __CSADDR_DEFINED__
  424. #define __CSADDR_DEFINED__
  425.  
  426. //
  427. // SockAddr Information
  428. //
  429. typedef struct _SOCKET_ADDRESS {
  430.     LPSOCKADDR lpSockaddr ;
  431.     INT iSockaddrLength ;
  432. } SOCKET_ADDRESS, *PSOCKET_ADDRESS, FAR * LPSOCKET_ADDRESS ;
  433.  
  434. //
  435. // CSAddr Information
  436. //
  437. typedef struct _CSADDR_INFO {
  438.     SOCKET_ADDRESS LocalAddr ;
  439.     SOCKET_ADDRESS RemoteAddr ;
  440.     INT iSocketType ;
  441.     INT iProtocol ;
  442. } CSADDR_INFO, *PCSADDR_INFO, FAR * LPCSADDR_INFO ;
  443.  
  444. #endif
  445.  
  446. //
  447. // Protocol Information
  448. //
  449. typedef struct _PROTOCOL_INFOA {
  450.     DWORD dwServiceFlags ;
  451.     INT iAddressFamily ;
  452.     INT iMaxSockAddr ;
  453.     INT iMinSockAddr ;
  454.     INT iSocketType ;
  455.     INT iProtocol ;
  456.     DWORD dwMessageSize ;
  457.     LPSTR   lpProtocol ;
  458. } PROTOCOL_INFOA, *PPROTOCOL_INFOA, FAR * LPPROTOCOL_INFOA ;
  459. //
  460. // Protocol Information
  461. //
  462. typedef struct _PROTOCOL_INFOW {
  463.     DWORD dwServiceFlags ;
  464.     INT iAddressFamily ;
  465.     INT iMaxSockAddr ;
  466.     INT iMinSockAddr ;
  467.     INT iSocketType ;
  468.     INT iProtocol ;
  469.     DWORD dwMessageSize ;
  470.     LPWSTR  lpProtocol ;
  471. } PROTOCOL_INFOW, *PPROTOCOL_INFOW, FAR * LPPROTOCOL_INFOW ;
  472. #ifdef UNICODE
  473. typedef PROTOCOL_INFOW PROTOCOL_INFO;
  474. typedef PPROTOCOL_INFOW PPROTOCOL_INFO;
  475. typedef LPPROTOCOL_INFOW LPPROTOCOL_INFO;
  476. #else
  477. typedef PROTOCOL_INFOA PROTOCOL_INFO;
  478. typedef PPROTOCOL_INFOA PPROTOCOL_INFO;
  479. typedef LPPROTOCOL_INFOA LPPROTOCOL_INFO;
  480. #endif // UNICODE
  481.  
  482. //
  483. // NETRESOURCE2 Structure
  484. //
  485. typedef struct _NETRESOURCE2A {
  486.     DWORD dwScope ;
  487.     DWORD dwType ;
  488.     DWORD dwUsage ;
  489.     DWORD dwDisplayType ;
  490.     LPSTR   lpLocalName ;
  491.     LPSTR   lpRemoteName ;
  492.     LPSTR   lpComment ;
  493.     NS_INFO ns_info ;
  494.     GUID ServiceType ;
  495.     DWORD dwProtocols ;
  496.     LPINT lpiProtocols ;
  497. } NETRESOURCE2A, *PNETRESOURCE2A, FAR * LPNETRESOURCE2A ;
  498. //
  499. // NETRESOURCE2 Structure
  500. //
  501. typedef struct _NETRESOURCE2W {
  502.     DWORD dwScope ;
  503.     DWORD dwType ;
  504.     DWORD dwUsage ;
  505.     DWORD dwDisplayType ;
  506.     LPWSTR  lpLocalName ;
  507.     LPWSTR  lpRemoteName ;
  508.     LPWSTR  lpComment ;
  509.     NS_INFO ns_info ;
  510.     GUID ServiceType ;
  511.     DWORD dwProtocols ;
  512.     LPINT lpiProtocols ;
  513. } NETRESOURCE2W, *PNETRESOURCE2W, FAR * LPNETRESOURCE2W ;
  514. #ifdef UNICODE
  515. typedef NETRESOURCE2W NETRESOURCE2;
  516. typedef PNETRESOURCE2W PNETRESOURCE2;
  517. typedef LPNETRESOURCE2W LPNETRESOURCE2;
  518. #else
  519. typedef NETRESOURCE2A NETRESOURCE2;
  520. typedef PNETRESOURCE2A PNETRESOURCE2;
  521. typedef LPNETRESOURCE2A LPNETRESOURCE2;
  522. #endif // UNICODE
  523.  
  524. typedef  DWORD (* LPFN_NSPAPI) (VOID ) ;
  525.  
  526. //
  527. // Structures for using the service routines asynchronously.
  528. //
  529. typedef
  530. VOID
  531. (*LPSERVICE_CALLBACK_PROC) (
  532.     IN LPARAM lParam,
  533.     IN HANDLE hAsyncTaskHandle
  534.     );
  535.  
  536. typedef struct _SERVICE_ASYNC_INFO {
  537.     LPSERVICE_CALLBACK_PROC lpServiceCallbackProc;
  538.     LPARAM lParam;
  539.     HANDLE hAsyncTaskHandle;
  540. } SERVICE_ASYNC_INFO, *PSERVICE_ASYNC_INFO, FAR * LPSERVICE_ASYNC_INFO;
  541.  
  542. //
  543. // Public NSP API prototypes.
  544. //
  545. INT
  546. APIENTRY
  547. EnumProtocolsA (
  548.     IN     LPINT           lpiProtocols,
  549.     IN OUT LPVOID          lpProtocolBuffer,
  550.     IN OUT LPDWORD         lpdwBufferLength
  551.     );
  552. //
  553. // Public NSP API prototypes.
  554. //
  555. INT
  556. APIENTRY
  557. EnumProtocolsW (
  558.     IN     LPINT           lpiProtocols,
  559.     IN OUT LPVOID          lpProtocolBuffer,
  560.     IN OUT LPDWORD         lpdwBufferLength
  561.     );
  562. #ifdef UNICODE
  563. #define EnumProtocols  EnumProtocolsW
  564. #else
  565. #define EnumProtocols  EnumProtocolsA
  566. #endif // !UNICODE
  567.  
  568. INT
  569. APIENTRY
  570. GetAddressByNameA (
  571.     IN     DWORD                dwNameSpace,
  572.     IN     LPGUID               lpServiceType,
  573.     IN     LPSTR              lpServiceName OPTIONAL,
  574.     IN     LPINT                lpiProtocols OPTIONAL,
  575.     IN     DWORD                dwResolution,
  576.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL,
  577.     IN OUT LPVOID               lpCsaddrBuffer,
  578.     IN OUT LPDWORD              lpdwBufferLength,
  579.     IN OUT LPSTR              lpAliasBuffer OPTIONAL,
  580.     IN OUT LPDWORD              lpdwAliasBufferLength OPTIONAL
  581.     );
  582. INT
  583. APIENTRY
  584. GetAddressByNameW (
  585.     IN     DWORD                dwNameSpace,
  586.     IN     LPGUID               lpServiceType,
  587.     IN     LPWSTR              lpServiceName OPTIONAL,
  588.     IN     LPINT                lpiProtocols OPTIONAL,
  589.     IN     DWORD                dwResolution,
  590.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo OPTIONAL,
  591.     IN OUT LPVOID               lpCsaddrBuffer,
  592.     IN OUT LPDWORD              lpdwBufferLength,
  593.     IN OUT LPWSTR              lpAliasBuffer OPTIONAL,
  594.     IN OUT LPDWORD              lpdwAliasBufferLength OPTIONAL
  595.     );
  596. #ifdef UNICODE
  597. #define GetAddressByName  GetAddressByNameW
  598. #else
  599. #define GetAddressByName  GetAddressByNameA
  600. #endif // !UNICODE
  601.  
  602. INT
  603. APIENTRY
  604. GetTypeByNameA (
  605.     IN     LPSTR         lpServiceName,
  606.     IN OUT LPGUID          lpServiceType
  607.     );
  608. INT
  609. APIENTRY
  610. GetTypeByNameW (
  611.     IN     LPWSTR         lpServiceName,
  612.     IN OUT LPGUID          lpServiceType
  613.     );
  614. #ifdef UNICODE
  615. #define GetTypeByName  GetTypeByNameW
  616. #else
  617. #define GetTypeByName  GetTypeByNameA
  618. #endif // !UNICODE
  619.  
  620. INT
  621. APIENTRY
  622. GetNameByTypeA (
  623.     IN     LPGUID          lpServiceType,
  624.     IN OUT LPSTR         lpServiceName,
  625.     IN     DWORD           dwNameLength
  626.     );
  627. INT
  628. APIENTRY
  629. GetNameByTypeW (
  630.     IN     LPGUID          lpServiceType,
  631.     IN OUT LPWSTR         lpServiceName,
  632.     IN     DWORD           dwNameLength
  633.     );
  634. #ifdef UNICODE
  635. #define GetNameByType  GetNameByTypeW
  636. #else
  637. #define GetNameByType  GetNameByTypeA
  638. #endif // !UNICODE
  639.  
  640. INT
  641. APIENTRY
  642. SetServiceA (
  643.     IN     DWORD                dwNameSpace,
  644.     IN     DWORD                dwOperation,
  645.     IN     DWORD                dwFlags,
  646.     IN     LPSERVICE_INFOA      lpServiceInfo,
  647.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
  648.     IN OUT LPDWORD              lpdwStatusFlags
  649.     );
  650. INT
  651. APIENTRY
  652. SetServiceW (
  653.     IN     DWORD                dwNameSpace,
  654.     IN     DWORD                dwOperation,
  655.     IN     DWORD                dwFlags,
  656.     IN     LPSERVICE_INFOW      lpServiceInfo,
  657.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo,
  658.     IN OUT LPDWORD              lpdwStatusFlags
  659.     );
  660. #ifdef UNICODE
  661. #define SetService  SetServiceW
  662. #else
  663. #define SetService  SetServiceA
  664. #endif // !UNICODE
  665.  
  666. INT
  667. APIENTRY
  668. GetServiceA (
  669.     IN     DWORD                dwNameSpace,
  670.     IN     LPGUID               lpGuid,
  671.     IN     LPSTR              lpServiceName,
  672.     IN     DWORD                dwProperties,
  673.     IN OUT LPVOID               lpBuffer,
  674.     IN OUT LPDWORD              lpdwBufferSize,
  675.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
  676.     );
  677. INT
  678. APIENTRY
  679. GetServiceW (
  680.     IN     DWORD                dwNameSpace,
  681.     IN     LPGUID               lpGuid,
  682.     IN     LPWSTR              lpServiceName,
  683.     IN     DWORD                dwProperties,
  684.     IN OUT LPVOID               lpBuffer,
  685.     IN OUT LPDWORD              lpdwBufferSize,
  686.     IN     LPSERVICE_ASYNC_INFO lpServiceAsyncInfo
  687.     );
  688. #ifdef UNICODE
  689. #define GetService  GetServiceW
  690. #else
  691. #define GetService  GetServiceA
  692. #endif // !UNICODE
  693.  
  694. #ifdef __cplusplus
  695. }
  696. #endif  /* __cplusplus */
  697.  
  698. #pragma option pop
  699. #endif  // _NSPAPI_INCLUDED
  700.